package io;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;

/**
 * 字符流
 * java.io.Reader和Writer
 * Reader是所有字符输入流的超类，Writer是所有字符输出流的超类
 *
 * 字节流与字符流:
 * java.io.InputStream和OutputStream是所有字节输入流和输出流的超类，读写单位是【字节】
 * 而字符流则是以【字符】(char)为单位读写数据的
 *
 * 字符流都是高级流
 *
 * 转换流
 * java.io.InputStreamReader和OutputStreamWriter
 * 转换流在流连接中起到转换器的作用，因为除了他们之外，其他的字符流都不能直接链接在字节流上，
 * 因为读写的数据单位不同，转换流在中间负责将字符与字节进行转换，从而可以使字符流与字节流链接
 * 在一起进行文本的读写操作。
 */
public class OSWDemo {
    public static void main(String[] args) throws IOException {
        //使用转换流测试字符流写出字符的相关操作
        /*FileOutputStream fos = new FileOutputStream("osw.txt");

        String line = "我祈祷拥有一颗透明的心灵，和会流泪的眼睛。";
        byte[] data = line.getBytes(StandardCharsets.UTF_8);
        fos.write(data);

        line = "给我再去相信的勇气，哦越过谎言去拥抱你。";
        data = line.getBytes(StandardCharsets.UTF_8);
        fos.write(data);

        fos.close();*/



        FileOutputStream fos = new FileOutputStream("osw.txt");
        OutputStreamWriter osw = new OutputStreamWriter(fos,StandardCharsets.UTF_8);
        osw.write("我祈祷拥有一颗透明的心灵，和会流泪的眼睛。");
        osw.write("给我再去相信的勇气，哦越过谎言去拥抱你。");
        System.out.println("写出完毕");
        osw.close();
    }
}
